//package com.deepface.system.service.impl;
//
//import com.deepface.common.config.deepfaceConfig;
//import com.deepface.common.utils.ssh2Utils.SSHTools;
//import com.deepface.system.service.IFileTransfer;
//import java.io.File;
//import org.springframework.core.io.FileSystemResource;
//import org.springframework.stereotype.Service;
//import org.springframework.web.multipart.MultipartFile;
//
///**
// * @author zbr
// * @version 1.0
// * @description
// * @date 2023/6/9
// */
//@Service
//public class FileTransferImpl implements IFileTransfer {
//  @Override
//  public String uploadAndRunJob(String localPath_sh, String localPath_input, String jobId, String outputName, String N, String n) {
//    SSHTools sshTools = SSHTools.getInstance();
//    String remotePath = "/home/zhujiada/picture";
//    String uniqueJobId = "";
//    try {
//      //1.密码登录主机
//      sshTools.loginByPassword("47.115.222.56", 8022, "zhujiada", "12345678");
//      //2.创建任务文件
//      String executeShell1 = sshTools.executeShell("mkdir -p /home/zhujiada/uno"+ jobId);
//      System.out.println("----------------------------------");
//      System.out.println(executeShell1);
//      //创建输出文件
//      String executeShell2 = sshTools.executeShell("mkdir -p /vol8/home/hnu_tzlab_5/app-test/"+ jobId+"/"+outputName);
//      System.out.println(executeShell2);
//      //上传文件
//      //sshTools.uploadLocalFile(localPath_sh, remotePath);
//      //上传文件
//     // sshTools.uploadLocalFile(localPath_input, remotePath);
//
//      String a = "cd "+ remotePath;
//      String b = "yhbatch -p tang -N "+N+" -n "+n+ " citcom.sh";
//      String[] list = new String[2];
//      list[0] = a;
//      list[1] = b;
//      uniqueJobId = sshTools.ssh2Shell(list);
//    } catch (Exception e) {
//      e.printStackTrace();
//    } finally {
//      //4.释放资源
//      sshTools.close();
//    }
//    //获取唯一jobID
//    String [] arr = uniqueJobId.split("\\s+");
//    uniqueJobId = arr[arr.length-5];
//    return uniqueJobId;
//  }
//
//  /**
//   * 查询进程运行状态
//   *
//   * @param uniqueJobId 天河给出的进程唯一id号
//   * @return 返回为true表示正在运行；返回为false表示运行结束
//   */
//  @Override
//  public Boolean checkProcessState(String uniqueJobId) {
//    SSHTools sshTools = SSHTools.getInstance();
//    Boolean flag = true;
//    try {
//      //1.密码登录主机
//      //sshTools.loginByPassword("25.8.100.25", 22, "hnu_tzlab_5", "hnu_tzlab_5");
//      sshTools.loginByPassword("47.115.222.56", 8022, "zhujiada", "12345678");
//      //2.查询任务运行状态
//      String a = "yhq &> test.txt";
//      String b = "cat test.txt";
//      String[] list = new String[2];
//      list[0] = a;
//      list[1] = b;
//      String executeShell2 = sshTools.ssh2Shell(list);
//      System.out.println("查看返回："+executeShell2);
//      if (executeShell2.indexOf(uniqueJobId) == -1) {
//        flag = false;
//      } else {
//        flag = true;
//      }
//    }
//    catch (Exception e) {
//      e.printStackTrace();
//      } finally {
//      //4.释放资源
//      sshTools.close();
//      }
//    return flag;
//  }
//
//  /**
//   * 下载结果到本地
//   */
//  @Override
//  public FileSystemResource downloadResult(Long jobId) {
//    SSHTools sshTools = SSHTools.getInstance();
//    String remoteResultPath = DeepFaceConfig.getRemoteResultPath()+"job-"+jobId;
//    try {
//      //1.密码登录主机
//      sshTools.loginByPassword("47.115.222.56", 8022, "zhujiada", "12345678");
//
//      String localDownloadPath = DeepFaceConfig.getPasserByPath()+ jobId + "/";
//
//      File folder = new File(localDownloadPath);
//      if (!folder.exists()) {
//        folder.mkdirs(); // 创建文件夹
//        System.out.println("------"+localDownloadPath);
//        String returnStr=sshTools.downloadFile(localDownloadPath, remoteResultPath);
//        if(!returnStr.equals("文件下载完成")) {
//          deleteFolder(folder);
//          return null;
//        }
//      }
//      FileSystemResource fileSystemResource = new FileSystemResource(localDownloadPath+"test_texture.ply");
//      System.out.println("aaaaaaaaa"+fileSystemResource.getDescription());
//      return fileSystemResource;
//    } catch (Exception e) {
//      e.printStackTrace();
//
//      return null; // 返回 null 表示下载失败，可能未生成
//      } finally {
//      //4.释放资源
//      System.out.println("释放资源");
//      sshTools.close();
//      }
//
//  }
//
//  // 删除文件夹及其内容的方法
//  private void deleteFolder(File folder) {
//    if (folder.isDirectory()) {
//      File[] files = folder.listFiles();
//      if (files != null) {
//        for (File file : files) {
//          deleteFolder(file);
//        }
//      }
//    }
//    folder.delete();
//  }
//
//  /**
//   * 用户图片上传
//   * @param jobId
//   */
//  @Override
//  public void uploadUserPhoto(MultipartFile[] multipartFiles, String jobId) {
//    SSHTools sshTools = SSHTools.getInstance();
//    String remoteResultPath = DeepFaceConfig.getRemoteResultPath();
//    String remoteImagePath= DeepFaceConfig.getRemoteImagePath();
//    System.out.println("----------"+remoteImagePath);
//    try {
//      //1.密码登录主机
//      sshTools.loginByPassword("47.115.222.56", 8022, "zhujiada", "12345678");
//      //2.创建任务文件
//      String photoDir=remoteImagePath+jobId+"/";
//      sshTools.executeShell("mkdir -p "+photoDir);
//
//      //3.创建输出文件
//      String plyDir=remoteResultPath+jobId+"/";
//      sshTools.executeShell("mkdir -p "+plyDir);
//
//      //4.上传图片
//      sshTools.uploadLocalFile(multipartFiles, photoDir);
//    } catch (Exception e) {
//      e.printStackTrace();
//    } finally {
//      //5.释放资源
//      sshTools.close();
//    }
//    return;
//  }
//
//  /**
//   * 用户PLY文件的移动
//   * @param jobId
//   */
//  @Override
//  public Boolean movePly(Long jobId) {
//    SSHTools sshTools = SSHTools.getInstance();
//    String remoteResultPath = DeepFaceConfig.getRemoteResultPath();
//    Boolean returnBoolean=false;
//    try {
//      //1.密码登录主机
//      sshTools.loginByPassword("47.115.222.56", 8022, "zhujiada", "12345678");
//      //2.执行脚本
//      String a = "cd "+remoteResultPath;
//      String b ="ls -l | grep \"^-\" | wc -l";
//      String[] list = new String[2];
//      list[0] = a;
//      list[1]= b;
//      String res=sshTools.ssh2Shell(list);
//      if(!res.equals("0")){
//        sshTools.executeShell("mv "+remoteResultPath+"test_texture.ply "+remoteResultPath+"job-"+jobId+"/");
//        returnBoolean=true;
//      }
//    } catch (Exception e) {
//      e.printStackTrace();
//    } finally {
//      //5.释放资源
//      sshTools.close();
//    }
//    return returnBoolean ;
//  }
//
//
//
//  @Override
//  public void deleteRaw() {
//    SSHTools sshTools = SSHTools.getInstance();
//    String remotePath = "/home/zhujiada/liujieqi_test/test_shell/dense/result";
//    try{
//      //1.密码登录主机
//      sshTools.loginByPassword("47.115.222.56", 8022, "zhujiada", "12345678");
//      //2.执行脚本
//      String a = "rm -r "+remotePath;
//      String[] list = new String[1];
//      list[0] = a;
//      sshTools.ssh2Shell(list);
//    }catch (Exception e) {
//      e.printStackTrace();
//    } finally {
//      //4.释放资源
//      sshTools.close();
//    }
//  }
//
//  /**
//   * 用户作业运行
//   */
//  public String runTheJob(Long jobId){
//    SSHTools sshTools = SSHTools.getInstance();
//    String remotePath = "/home/zhujiada/liujieqi_test/";
//    String uniqueJobId = "";
//    try{
//      //1.密码登录主机
//      sshTools.loginByPassword("47.115.222.56", 8022, "zhujiada", "12345678");
//      //2.执行脚本
//      String a="cd /home/zhujiada/liujieqi_test/";
//      String c="ls";
//      String b = "nohup sh re_test.sh job-"+jobId+" >/home/zhujiada/liujieqi_test/mylog.txt 2>&1 & \n";
//      String[] list = new String[3];
//      list[0]=a;
//      list[1]=c;
//      list[2]=b;
//
//      uniqueJobId = sshTools.ssh2Shell(list);
//    }catch (Exception e) {
//      e.printStackTrace();
//    } finally {
//      //4.释放资源
//      sshTools.close();
//    }
////    获取唯一jobID
//    String [] arr = uniqueJobId.split("\\s+");
//    uniqueJobId = arr[arr.length-5];
//    return uniqueJobId;
//
//  }
//}
